Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add functions to support Standard Swizzle textures #515

Open
wants to merge 23 commits into
base: main
Choose a base branch
from

Conversation

isplunke
Copy link

@isplunke isplunke commented Sep 17, 2024

Implement z-order curve "swizzling" for 2D and 3D textures to support the pixel order used for "Standard Swizzle" as defined by D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE.

These functions only perform the row-major <=> z-order curve operation. 64KB alignment, miptail packing, and other requirements are handled in other distinct operations.

@isplunke
Copy link
Author

@microsoft-github-policy-service agree company="Microsoft"

@walbourn walbourn self-assigned this Sep 18, 2024
@walbourn
Copy link
Member

Note for testing, I'll add coverage to the test suite which will likely just do a swizzle and deswizzle and make sure the bits match.

As for determining if the swizzle is correct, I probably need to make a test app that renders using WARP which supports standard swizzle.

@walbourn walbourn changed the title [Draft] Add functions to swizzle textures [Draft] Add functions to support Standard Swizzle textures Sep 18, 2024
@walbourn walbourn changed the title [Draft] Add functions to support Standard Swizzle textures Add functions to support Standard Swizzle textures Sep 25, 2024
@walbourn walbourn added the dx12 Direct3D 12 label Sep 25, 2024
- needs to be tested.  where to get dx12 boilerplate?  test just that texute still looks correct, or also test performance improves when roteated?
- maybe merge functions?  would then pass a boolean/enum to determine rowToSwizzle versus swizzleToRow

Added functions that converts pixel order from row major to standard swizzle and from standard swizzle to row major.

Functions for both 1 Image, and an array of Images.

Folwoing standard DirectXTex pattern: Uses Image and TexMetadata as input.  Outputs/initializes a ScratchImage.
Added new file to .vcxproj, other.vcxproj, and Cmake

Merged to/from functions togeather
memcpy src is const
added non-AVX2 deposit_bits
TODO what flags/threshold to use to re-Compress?
@walbourn walbourn marked this pull request as ready for review March 9, 2025 18:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add function to convert a texture to Standard Swizzle and vice versa
2 participants